Practical Formal Verification of MPI and Thread Programs Tutorial Notes
نویسنده
چکیده
This document is being prepared to serve as a reference for the tutorial with the same title that will be offered during EuroPVM/MPI 2009 in Espoo, September 7, 2009. In this tutorial, we will mostly focus on the topic of formal dynamic verification [1] of MPI programs using our tool ISP. There will also be a short session on shared memory program verification using our tool Inspect. Section 4 discusses Inspect/threading; until this section, this document focuses on ISP and MPI dynamic formal verification. In this tutorial document, we assume familiarity with MPI and basic threading concepts. In the EuroPVM/MPI tutorial, we will provide short introductions to MPI and threading. ISP (In-Situ Partial order) is our dynamic formal verification tool for MPI programs. Currently, ISP can verify MPI C programs (Fortran porting is underway), and employs available standard MPI libraries to provide the semantics of MPI calls. So far, ISP has been tested successfully using the MPI libraries MPICH2, OpenMPI, and Microsoft MPI. To a lesser extent, ISP has also been tested using MVAPICH and IBM MPI. ISP has been successfully run on the Linux, Mac OS/X, and Windows operating systems. As to graphical user interfaces, ISP has two of them, one created using Visual Studio and the other using Eclipse. This document is written without specific references to the particular high level language, MPI library, operating system, or GUI used by ISP. It is meant to cover the basic principles underlying all these versions of ISP. Specific details pertaining to these platforms, including user manuals, are available on the ISP website. With these preliminaries out of the way, we are now ready to present the heart of ISP – namely, its central algorithm POE (Partial Order avoiding Elusive interleavings). We name the algorithm employed by ISP separately because in future we plan to have other algorithms in lieu of POE (the tool name is expected to remain ISP). Let us study POE using the example executions shown in Figure 1. In the pseudo-code presented in this figure, we have suppressed details of the data shipped by the communication commands, as well as computation oriented statements that would typically be employed between MPI calls. Also we employ * to highlight wildcard receive.
منابع مشابه
Practical Formal Verification of MPI and Thread Programs
Large-scale simulation codes in science and engineering are written using the Message Passing Interface (MPI). Shared memory threads are widely used directly, or to implement higher level programming abstractions. Traditional debugging methods for MPI or thread programs are incapable of providing useful formal guarantees about coverage. They get bogged down in the sheer number of interleavings ...
متن کاملGauss: A Framework for Verifying Scientific Computing Software
High performance scientific computing software is of critical international importance as it supports scientific explorations and engineering. Software development in this area is highly challenging owing to the use of parallel/distributed programming methods and complex communication and synchronization libraries. There is very little use of formal methods to debug software in this area, given...
متن کاملVerifying Parallel Programs with MPI-Spin
Standard testing and debugging techniques are notoriously ineffective when applied to parallel programs, due to the numerous sources of nondeterminism arising from parallelism. MPI-Spin, an extension of the model checker Spin for verifying and debugging MPI-based parallel programs, overcomes many of the limitations associated with the standard techniques. By exploring all possible executions of...
متن کاملPractical Model-Checking Method for Verifying Correctness of MPI Programs
Formal program verification often requires creating a model of the program and running it through a model-checking tool. However, this model-creation step is itself error prone, tedious, and difficult for someone not familiar with formal verification. In this paper, we describe a tool for verifying correctness of MPI programs that does not require the creation of a model and instead works direc...
متن کاملReduced Execution Semantics of MPI: From Theory to Practice
There is growing need to develop formal verification tools for Message Passing Interface (MPI) programs to eliminate bugs such as deadlocks and local assertion violations. Of all approaches, dynamic verification is most practical for MPI. Since the number of interleavings of concurrent programs grow exponentially, we devise a dynamic interleaving reduction algorithm (dynamic partial order reduc...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2009